package com.inspur.cdc.server.control.sdk.bmcupdate;

import com.inspur.cdc.server.control.sdk.bmcupdate.bean.BmcUpdateBean;
import com.inspur.cdc.server.control.sdk.bmcupdate.bean.BmcUpdateConfigBean;
import com.inspur.cdc.server.control.sdk.bmcupdate.bean.BmcUpdateResult;

/**
 * BMC固件升级接口
 * 总共包含四个接口
 */
public interface BmcUpdateService {

    /**
     * 更新BMC第一个镜像 ，不保留配置
     * @param bmcUpdateBean
     * @return
     */
    BmcUpdateResult bmcUpdateFirstImage(BmcUpdateBean bmcUpdateBean);

    /**
     * 更新BMC第一个镜像，保留配置
     * @param bmcUpdateBean
     * @param bmcUpdateConfigBean
     * @return
     */
    BmcUpdateResult bmcUpdateFirstImage(BmcUpdateBean bmcUpdateBean, BmcUpdateConfigBean bmcUpdateConfigBean);

    /**
     * 更新BMC第二个镜像，不保留配置
     * @param bmcUpdateBean
     * @return
     */
    BmcUpdateResult bmcUpdateSecondImage(BmcUpdateBean bmcUpdateBean);

    /**
     * 更新BMC第二个镜像，保留配置
     * @param bmcUpdateBean
     * @param bmcUpdateConfigBean
     * @return
     */
    BmcUpdateResult bmcUpdateSecondImage(BmcUpdateBean bmcUpdateBean, BmcUpdateConfigBean bmcUpdateConfigBean);

    /**
     * 更新BMC双镜像，不保留配置
     * @param bmcUpdateBean
     * @return
     */
    BmcUpdateResult bmcUpdateBothImage(BmcUpdateBean bmcUpdateBean);

    /**
     * 更新BMC双镜下，保留配置
     * @param bmcUpdateBean
     * @param bmcUpdateConfigBean
     * @return
     */
    BmcUpdateResult bmcUpdateBothImage(BmcUpdateBean bmcUpdateBean, BmcUpdateConfigBean bmcUpdateConfigBean);


    /**
     * 获取BMC升级进度
     * @return
     */
    int getBmcUpdateProcess();


}
